/*
static使用：

静态成员变量也叫、类变量或、类成员
静态成员方法也叫、类方法

静态成员变量不属于对象，所以不需要通过对象的引用访问，直接通过类名进行访问！！！
静态成员方法不属于对象，所以不需要通过对象的引用访问，直接通过类名进行访问！！！

!!静态的不依赖与对象，直接通过类名. 进行访问！！

在静态方法内部不能直接调用非静态成员方法

只要是非静态的成员变量都需要通过对象的引用进行调用

在静态方法内部不能够直接使用非静态方法的成员变量

如果要在静态方法内部调用非静态方法需要new这个对象

静态的是放在方法区上的

静态方法无法重写！

 */


class Person {
    private String name;
    private int age;
    public static String classRoom = "日期：20221126";//静态成员变量、类变量、类成员   被static修饰的变量方法称为静态成员变量

    private static int size = 20;


    public Person() {

    }
    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }
    public Person(String name, int age,int si) {
        this.name = name;
        this.age = age;
        size = si;            //在构造方法中可以对静态成员变量进行初始化 但是 不建议！！！！
    }


    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public static int getSize() {
        return size;
    }

    public static void setSize(int size) {
        Person.size = size;
    }



    public static void func() {   //被static修饰的成员方法称为静态成员方法
//        System.out.println(name);
//        System.out.println(this.name);
//        show();                                //在静态方法内部不能直接调用非静态成员方法

//        Person person = new Person();
//        person.show();                      // 如果要在静态方法内部调用非静态方法需要new这个对象

//        System.out.println(this.name);     //静态方法里面不能使用this !
//        System.out.println(name);          //在静态方法内部不能够直接使用非静态方法的成员变量
        //只要是非静态的成员变量都需要通过对象的引用进行调用

        System.out.println("静态成员方法func()");
    }
    public void eat() {
        System.out.println(name+" 吃饭！");
        func();                              //普通的成员方法是可以调用静态的成员方法的！
    }
    public void show() {
        System.out.println("姓名："+name+" 年龄："+age);
    }

}






public class Test {

    public static void main(String[] args) {

        Person.setSize(10);
        System.out.println(Person.getSize());
    }

    public static void main3(String[] args) {

        Person.func();//静态成员方法不属于对象，所以不需要通过对象的引用访问，直接通过类名进行访问！！！
    }

    public static void main2(String[] args) {
        System.out.println(Person.classRoom);//静态成员变量不属于对象，所以不需要通过对象的引用访问，直接通过类名进行访问！！！


        System.out.println("============");

        Person person1 = null;                 //静态成员变量不属于对象，所以不需要通过对象的引用访问，直接通过类名进行访问！！！
//       System.out.println(person1.classRoom);
        System.out.println(Person.classRoom);
    }

    public static void main1(String[] args) {
        Person person1 = new Person("keybinding",20);
        person1.show();
        person1.setName("yangdike");
        person1.setAge(21);
        person1.show();

        System.out.println("==========");

        Person person2 = new Person();
        person2.setName("yagliu");
        person2.setAge(21);
        person2.show();

        System.out.println("==========");

        Person person3 = new Person();


    }

}
